f7beff
@@ -84,15 +84,14 @@
public class RabbitMQProducer extends DefaultProducer {
         if (exchangeName == null || getEndpoint().isBridgeEndpoint()) {
             exchangeName = getEndpoint().getExchangeName();
         }
-        if (ObjectHelper.isEmpty(exchangeName)) {
-            throw new IllegalArgumentException("ExchangeName is not provided in the endpoint: " + getEndpoint());
-        }
-
-        String key = exchange.getIn().getHeader(RabbitMQConstants.ROUTING_KEY, "", String.class);
+        String key = exchange.getIn().getHeader(RabbitMQConstants.ROUTING_KEY, null, String.class);
         // we just need to make sure RoutingKey option take effect
-        if (key.trim().length() == 0) {
+        if (key == null) {
             key = getEndpoint().getRoutingKey() == null ? "" : getEndpoint().getRoutingKey();
         }
+        if (ObjectHelper.isEmpty(key) && ObjectHelper.isEmpty(exchangeName)) {
+            throw new IllegalArgumentException("ExchangeName and RoutingKey is not provided in the endpoint: " + getEndpoint());
+        }
         byte[] messageBodyBytes = exchange.getIn().getMandatoryBody(byte[].class);
         AMQP.BasicProperties.Builder properties = buildProperties(exchange);
 
